<!DOCTYPE html>
<html lang="en">
  <head>
  <link href="./css/prettify.css" type="text/css" rel="stylesheet" />
    <meta charset="utf-8">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- Le styles -->
    <link href="./css/bootstrap.css" rel="stylesheet">
    <style type="text/css">
      body {
        padding-top: 60px;
        padding-bottom: 40px;
      }
      .sidebar-nav {
        padding: 9px 0;
      }
    </style>
    <link href="./css/bootstrap-responsive.css" rel="stylesheet">
	<link href="./css/bootstrap.css" rel="stylesheet">
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Fav and touch icons -->
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="./ico/apple-touch-icon-144-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="./ico/apple-touch-icon-114-precomposed.png">
      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="./ico/apple-touch-icon-72-precomposed.png">
                    <link rel="apple-touch-icon-precomposed" href="./ico/apple-touch-icon-57-precomposed.png">
                                   <link rel="shortcut icon" href="./ico/favicon.png">
  </head>

  <body >

     <div class="navbar navbar-inverse navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container-fluid">
          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </a>
          <a class="brand" href="#"></a>
          <div class="nav-collapse collapse">
            <p class="navbar-text pull-right">
              Logged in as <a href="#" class="navbar-link">Username</a>
            </p>
            <ul class="nav">
              <li class="active"><a href="#">Documentation</a></li>
            </ul>
          </div><!--/.nav-collapse -->
        </div>
      </div>
    </div>

    <div class="container-fluid">
      <div class="row-fluid">
      
      <div class="span3" >
      <div id="sidebar" class="sidebar-nav">
	<div  class="well" style="width:300px; padding: 8px 0;">
		<ul  id="sidenav" class="nav nav-list"> 
		  <li class="nav-header">Table des matières</li>        
		</ul>
	</div>
</div>
      
      </div>
      
      
      
       
        <div class="span9">
          <div class="row-fluid">
            <div class="span12">
            <span id="mddisplay" />
            <xmp id="mdspan" style="display:none">
# Installation de GeoSource
## Introduction
Les fiches de métadonnées du portail RBV sont stockées dans l'application Géosource, configurée spécifiquement à cet effet.
Cette configuration est appliquée automatiquement.  
Cet article indique 
 
  - La manière de lancer cette configuration via maven 
  - Le contenu de cette configuration automatique

## Mise en place de la configuration via maven

### Téléchargement
Les versions de géosource se téléchargent sur le [site officiel du projet] (http://www.geosource.fr/).  
Depuis les dernières versions , *geosource* n'est plus disponible sous forme de *war* mais d'un *jar* d'installation.  
Son nom est de la forme *geosource-install-VVV.jar* où *VVV* est le numéro de la version courante. 
Dans la suite du document le terme *VVV* designera la version de géosource à configurer.    
Ce fichier doit être déposé dans le répertoire *distrib* du projet.

### Lancement de la configuration
Dans le répertoire racine du projet (celui contenant le fichier *pom.xml*), il suffit de lancer la commande  
````mvn clean package -DgeosourceVersion=VVVV```` (exemple ````mvn clean package -DgeosourceVersion=2.7.3-0````).  
    
A l'issue de celle-ci le fichier *geosource.war* sera présent dans le répertoire */target*.    
Il suffit alors de l'installer dans un conteneur de servlet (Tomcat, Glassfish...).  


## Contenu de la configuration

### Extraction de l'installateur
Le jar d'installation est au format IzPack. La première étape consiste à extraire son contenu via le fichier d'automatisation *automatedInstall.xml*.  
L'installation s'effectue dans le répertoire */tmp*.  

### Application de la configuration

#### Stratégie générale
La partie correspondant uniquement au *war* de geosource est située dans */tmp/web/geosource*.    
Les fichiers de configuration sont situées dans le sous répertoire *WEB-INF*. Chaque fichier porte sur un thème particulier de la configuration : profils des utilisateurs, indexation, moissonnage, ... Afin de simplifier l'adaptation à un contexte de la configuration, Geosource dispose d'un mécanisme de surcharge (*override*) permettant de regrouper en un seul fichier les modifications à apporter sur plusieurs fichiers de configuration. Toutefois l'utilisation de ce mécanisme peut comporter certains soucis :  

  - Il est difficile à mettre en place. En effet, il n'est pas facile à débugger, car il n'est pas aisé de tracer la configuration ainsi surchargée.
  - Il comporte une certaine instabilité d'une version à l'autre de Geosource. Ainsi, par exemple, dans la version actuelle (2.7.3-0), il ne fonctionne pas sur les plateformes Windows.
  
Pour ces raisons, la strategie est de ne pas utiliser ce mécanisme est de remplacer directement, via la procédure, les fichiers de configuration définitifs.  
De plus, chaque environnement (production, développement, ...) peut nécessiter une configuration spécifique (par exemple une adresse de basse de données différente). Ainsi les différents fichiers de configuration sont déposés dans un repertoire portant le nom de l'environnement cible. Par défaut la cible est *prod*. Elle peut être modifiée lors de la commande *maven* via la varibale *env*.    
Exemple : ````mvn -Denv=dev ...````  

  
#### Gestion des profils et des utilisateurs
Geosource propose trois notions dans la gestion des droits :

  - Le groupe : c'est un ensemble d'utilisateurs
  - Le profil : c'est un ensemble de droits.    
  - L'utilisateur : c'est une personne se connectant à l'application afin d'y effectuer un certain nombre d'actions en fonction des profils qui lui sont attribués et des groupes auxquels il appartient.
  
  
Geosource définit les profils suivants.

  - *Administrator* :  Administration générale des utilisateurs et des fiches de métadonnées du catalogue.
  - *User administrator* : Administration d'utilisateurs restreinte au(x) groupe(s) d'appartenance.
  - *Content Reviewer* : Validation des fiches de métadonnées restreinte au(x) groupe(s) d'appartenance.
  - *Editor* : Rédaction/modification des fiches de métadonnées restreinte au(x) groupe(s) d'appartenance.
  - *Registered User* : Téléchargement des données protégées.

Géosource ne permet pas de créer des profils complémentaires mais les profils de base peuvent être étendus ou restreints.    
 
Dans le cadre de RBV les utilisateurs ne se connecteront pas à l'application directement mais via le portail (consultation/édition de fiches) ou via le web service d'alimentation. Il n'y a donc pas besoin de mettre en place des utilisateurs correspondant aux personnes. Toutefois, il est bon de conserver la séparation des fiches par observatoire.  
Ainsi, la démarche suivante a été mise en place :

  - Un groupe est créé: *rbv*
  - Le profil *Editor* est étendu afin de permettre l'accès CSW aux fiches du groupe *rbv*
  - Pour chaque observatoire un utilisateur est créé: *obsera*, *omere*, ... Chaque utilisateur appartient au groupe *rbv* et à le profil *Editor*

**Fichiers concernés par la configuration** : 

  - user-profiles.xml

#### Base de données

La configuration adapte les différents paramètres de la base de données (adresse, type, limitation du nombre de connexions dans le pool en prod...).

**Fichiers concernés par la configuration** : 

  - config.xml
  - config-overrides-geosource-props.xml (le fichier est un override fournit de base par la distribution de Geosource)  
  - config-overrides-geosource.xml (le fichier est un override fournit de base par la distribution de Geosource)
  
#### Index Lucène

Geonetwork utilise Lucène pour indexer les fiches de métadonnées.
Dans le contexte RBV de nouveaux champs spécifiques sont à ajouter. Ceci se fait via le fichier index-fields.xsl. Il doit être déposé dans le schema-plugin correspondant au format RBV. Actuellement il s'agit de iso19139.

**Fichiers concernés par la configuration** : 

  - iso19139/index-fields.xsl
 
### Génération du war 
L'arborescence située dans */tmp/web/geosource* est ensuite zippée dans le *war* */target/geosource.war*.  
Le war est prêt à être déployé.









</xmp>


	 
	               <!-- 
               <h2>Heading</h2>
              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
              <p><a class="btn" href="#">View details &raquo;</a></p>
               -->
            </div><!--/span-->
            
          </div><!--/row-->
          
        </div><!--/span-->
      </div><!--/row-->

      <hr>

	
      <footer>
        
      </footer>

    </div><!--/.fluid-container-->

    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./js/jquery.js"></script>
    <script src="./js/bootstrap.js"></script>
    <script src="./js/marked.js"></script>
    <script src="./js/prettify.js"></script>
    <script type="text/javascript">
    $.fn.tagName = function() {    return this.get(0).tagName.toLowerCase(); }
    
    
    $(document).ready(function() {
    	var mdContent = $("#mdspan").text();
    	//$("#mdspan").text(marked(mdContent));
    	$("#mddisplay").html(marked(mdContent));
    	$("#mddisplay code").addClass("prettyprint");
    	//$("#sidenav").empty();
    	var i =0;
    	$( "#mddisplay :header" ).each(function( index ) {
    		//alert($(this).tagName);
    		//alert(this.nodeName.toLowerCase());
    		 //
    		 //alert($(this).tagName());
    		 $(this).wrap("<section id=link"+i+ " />");
    		 $(this).attr("style","padding-top: 45px; margin-top: -45px;");
    		 var step=7;
    		 var padding = 3*step;
    		 if ($(this).tagName()=="h1")
    		 {
    			padding= 0*step;	 
    	     }
    		 if ($(this).tagName()=="h2")
    		 {
    			padding=1*step;	 
    	     }
    		 if ($(this).tagName()=="h3")
    		 {
    			padding=2*step;	 
    	     }
    		 
    		 
    		 $('#sidenav').append('<li style="padding-left:'+padding+'px"><a href="#link'+i+'"><i class="icon-chevron-right"></i> '+$(this).text()+'</a></li>');
    		 i++;
    		});
    	
    	//prettyprint
    	prettyPrint();
    	$('#sidebar').affix()
    	//alert((mdContent)); 
    	//alert(marked(mdContent));
    	//$("#mdspan").css("display","inherit");
    	});
    
    </script>
  </body>
</html>
